-- 定义参数
-- 优惠券id
local voucherId=ARGV[1]
--用户id
local userId=ARGV[2]
--订单id
local orderId=ARGV[3]

--定义key
--库存的key
local stockKey="seckill:stock:" .. voucherId
--订单key
local orderKey="seckill:order:" ..  voucherId

--脚本业务
--判断库存是否充足
if (tonumber(redis.call('get',stockKey))<=0) then
    --不充足
        return 1
end

--充足
--判断用户是否下单
if (redis.call('sismember',orderKey,userId)==1) then
    --下过单了
    return 2
end

--没下过单
--扣减库存
redis.call('incrby',stockKey,-1)
--将用户id存入优惠券set集合中
redis.call('sadd',orderKey,userId)
--将消息加入队列中
redis.call('xadd','stream.orders','*','userId',userId,'voucherId',voucherId,'id',orderId)
return 0
